﻿// 10006 数列分段.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

using namespace std;

/*
https://loj.ac/p/10006


题目描述
对于给定的一个长度为 N 的正整数数列 A_i，现要将其分成连续的若干段，
并且每段和不超过 M（可以等于 M），问最少能将其分成多少段使得满足要求。

输入格式
第一行包含两个正整数 N,M，表示了数列 A_i 的长度与每段和的最大值；

第二行包含 N 个空格隔开的非负整数 A_i。

输出格式
输出文件仅包含一个正整数，输出最少划分的段数。

样例
5 6
4 2 4 5 1

3

数据范围与提示
对于 100\% 的数据，有 N <= 10^5, M<= 10^9，M 大于所有数的最大值。
*/

const int N = 100010;
int arr[N];
int n, m;



int main()
{
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}

	int sum = 0;
	int ans = 0;

	for (int curr = 0; curr < n; curr++) {
		if (sum + arr[curr] > m) {
			ans++;
			sum = arr[curr];
		}
		else {
			sum += arr[curr];
		}
	}
	ans++;
	cout << ans << endl;
	

}

 